package com.settlement.system.model.entity.common;

import com.alibaba.excel.annotation.ExcelIgnoreUnannotated;
import com.alibaba.excel.annotation.ExcelProperty;
import com.alibaba.excel.annotation.write.style.ColumnWidth;
import com.alibaba.excel.annotation.write.style.HeadFontStyle;
import com.alibaba.excel.annotation.write.style.HeadRowHeight;
import com.alibaba.excel.annotation.write.style.HeadStyle;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.settlement.system.converter.DateTimeFormatConvert;
import com.settlement.system.converter.WpDeliveryTypeConvert;
import com.settlement.system.converter.wp.SysInitialJudgeRefundDifConvert;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;

import java.io.Serializable;
import java.math.BigDecimal;
import java.util.Date;
/**
 * WP-退供差异分析
 * @author xiaochuan
 * @since 2022-08-30
 */
@Data
@ExcelIgnoreUnannotated
@HeadStyle(fillBackgroundColor = 9,fillForegroundColor = 9)
@HeadRowHeight(value = 20)
@HeadFontStyle(fontHeightInPoints = 14)
public class TblWpRefundDifAnalysis extends BaseModel implements Serializable {


    /**
     * 公司编码
     */
    @ColumnWidth(15)
    @ExcelProperty(value = "公司编码")
    @ApiModelProperty(value = "公司编码")
    private String companyNo;

    /**
     * 公司名称
     */
    @ColumnWidth(30)
    @ExcelProperty(value = "公司名称")
    @ApiModelProperty(value = "公司名称")
    private String companyName;

    /**
     * 唯品仓库
     */
    @ColumnWidth(15)
    @ExcelProperty(value = "唯品仓库")
    @ApiModelProperty(value = "唯品仓库")
    private String wpStoreName;

    /**
     * 供应商联系人
     */
    @ColumnWidth(15)
    @ExcelProperty(value = "供应商联系人")
    @ApiModelProperty(value = "供应商联系人")
    private String vendorContact;

    /**
     * 发货类型
     */
    @ColumnWidth(15)
    @ExcelProperty(value = "发货类型",converter = WpDeliveryTypeConvert.class)
    @ApiModelProperty(value = "发货类型")
    private Integer deliveryType;

    /**
     * PO单号
     */
    @ColumnWidth(15)
    @ExcelProperty(value = "PO单号")
    @ApiModelProperty(value = "PO单号")
    private String poNo;

    /**
     * 商品条码
     */
    @ColumnWidth(20)
    @ExcelProperty(value = "商品条码")
    @ApiModelProperty(value = "商品条码")
    private String barCode;

    /**
     * 退供单号
     */
    @ColumnWidth(20)
    @ExcelProperty(value = "退供单号")
    @ApiModelProperty(value = "退供单号")
    private String refundNo;

    /**
     * 品牌部名称
     */
    @ColumnWidth(15)
    @ExcelProperty(value = "品牌部名称")
    @ApiModelProperty(value = "品牌部名称")
    private String brandUnitName;

    /**
     * 档期
     */
    @ColumnWidth(15)
    @ExcelProperty(value = "档期")
    @ApiModelProperty(value = "档期")
    private String orderSchedule;

    /**
     * 唯品状态
     */
    @ColumnWidth(15)
    @ExcelProperty(value = "唯品状态")
    @ApiModelProperty(value = "唯品状态")
    private String wpOrderStatus;

    /**
     * 回采PO
     */
    @ColumnWidth(20)
    @ExcelProperty(value = "回采PO")
    @ApiModelProperty(value = "回采PO")
    private String returnPoNo;

    /**
     * 是否寄回
     */
    @ColumnWidth(15)
    @ExcelProperty(value = "是否寄回")
    @ApiModelProperty(value = "是否寄回")
    private String isSendBack;

    /**
     * 建单日期
     */
    @ColumnWidth(20)
    @ExcelProperty(value = "建单日期",converter = DateTimeFormatConvert.class)
    @ApiModelProperty(value = "建单日期")
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
    private Date orderCreateTime;

    /**
     * 退供差异申诉数量
     */
    @ColumnWidth(25)
    @ExcelProperty(value = "退供差异申诉数量")
    @ApiModelProperty(value = "退供差异申诉数量")
    private Integer refundDifComplaintQty;

    /**
     * 退供差异申诉金额
     */
    @ColumnWidth(25)
    @ExcelProperty(value = "退供差异申诉金额")
    @ApiModelProperty(value = "退供差异申诉金额")
    private BigDecimal refundDifComplaintAmount;

    /**
     * 退供差异申诉单价
     */
    @ColumnWidth(25)
    @ExcelProperty(value = "退供差异申诉单价")
    @ApiModelProperty(value = "退供差异申诉单价")
    private Integer refundDifComplaintPrice;

    /**
     * 退供差异结算数量
     */
    @ColumnWidth(25)
    @ExcelProperty(value = "退供差异结算数量")
    @ApiModelProperty(value = "退供差异结算数量")
    private Integer refundDifSettledQty;

    /**
     * 退供差异结算金额
     */
    @ColumnWidth(25)
    @ExcelProperty(value = "退供差异结算金额")
    @ApiModelProperty(value = "退供差异结算金额")
    private BigDecimal refundDifSettledAmount;

    /**
     * 退供差异未结算数量
     */
    @ColumnWidth(25)
    @ExcelProperty(value = "退供差异未结算数量")
    @ApiModelProperty(value = "退供差异未结算数量")
    private Integer refundDifUnsettledQty;

    /**
     * 退供差异未结算金额
     */
    @ColumnWidth(25)
    @ExcelProperty(value = "退供差异未结算金额")
    @ApiModelProperty(value = "退供差异未结算金额")
    private BigDecimal refundDifUnsettledAmount;

    /**
     * 三退退供返还数量
     */
    @ColumnWidth(25)
    @ExcelProperty(value = "三退退供返还数量")
    @ApiModelProperty(value = "三退退供返还数量")
    private Integer threeReturnBackQty;

    /**
     * 唯品单价
     */
    @ColumnWidth(15)
    @ExcelProperty(value = "唯品单价")
    @ApiModelProperty(value = "唯品单价")
    private BigDecimal wpUnitPrice;

    /**
     * 唯品退货数量
     */
    @ColumnWidth(20)
    @ExcelProperty(value = "唯品退货数量")
    @ApiModelProperty(value = "唯品退货数量")
    private Integer wpRefundQty;

    /**
     * 三退数量
     */
    @ColumnWidth(15)
    @ExcelProperty(value = "三退数量")
    @ApiModelProperty(value = "三退数量")
    private Integer threeReturnQty;

    /**
     * 退供未结算数量
     */
    @ColumnWidth(20)
    @ExcelProperty(value = "退供未结算数量")
    @ApiModelProperty(value = "退供未结算数量")
    private Integer refundUnsettledQty;

    /**
     * 退供未结算金额
     */
    @ColumnWidth(20)
    @ExcelProperty(value = "退供未结算金额")
    @ApiModelProperty(value = "退供未结算金额")
    private BigDecimal refundUnsettledAmount;

    /**
     * 退供单号为SO单数量
     */
    @ColumnWidth(25)
    @ExcelProperty(value = "退供单号为SO单数量")
    @ApiModelProperty(value = "退供单号为SO单数量")
    private Integer refundNoEqSoQty;

    /**
     * 退供单号为SO单金额
     */
    @ColumnWidth(25)
    @ExcelProperty(value = "退供单号为SO单金额")
    @ApiModelProperty(value = "退供单号为SO单金额")
    private BigDecimal refundNoEqSoAmount;

    /**
     * 残次退供数量
     */
    @ColumnWidth(20)
    @ExcelProperty(value = "残次退供数量")
    @ApiModelProperty(value = "残次退供数量")
    private Integer defectiveRefundQty;

    /**
     * 残次退供金额
     */
    @ColumnWidth(20)
    @ExcelProperty(value = "残次退供金额")
    @ApiModelProperty(value = "残次退供金额")
    private BigDecimal defectiveRefundAmount;

    /**
     * 调整数量
     */
    @ColumnWidth(15)
    @ExcelProperty(value = "调整数量")
    @ApiModelProperty(value = "调整数量")
    private Integer adjustQty;

    /**
     * 调整金额
     */
    @ColumnWidth(15)
    @ExcelProperty(value = "调整金额")
    @ApiModelProperty(value = "调整金额")
    private BigDecimal adjustAmount;

    /**
     * 退供未收货数量
     */
    @ColumnWidth(20)
    @ExcelProperty(value = "退供未收货数量")
    @ApiModelProperty(value = "退供未收货数量")
    private Integer refundUnreceivedQty;

    /**
     * 退供未收货金额
     */
    @ColumnWidth(20)
    @ExcelProperty(value = "退供未收货金额")
    @ApiModelProperty(value = "退供未收货金额")
    private BigDecimal refundUnreceivedAmount;

    /**
     * 退供月份
     */
    @ColumnWidth(15)
    @ExcelProperty(value = "退供月份")
    @ApiModelProperty(value = "退供月份")
    private String refundMonth;

    /**
     *
     * 系统初判。
     * 1,无需核查-退供单差异数量为0;
     * 2,无需核查-退供单差异数量小于0;
     * 3,待核查-退供单差异数量大于0;
     * 4,无需核查-待结算;
     * 5,待核查;
     * 6,无需核查-退供未收获数量为0;
     */
    @ColumnWidth(15)
    @ExcelProperty(value = "系统初判",converter = SysInitialJudgeRefundDifConvert.class)
    @ApiModelProperty(value = "系统初判。(1,无需核查-退供单差异数量为0;2,无需核查-退供单差异数量小于0;3,待核查-退供单差异数量大于0;4,无需核查-待结算;5,待核查;6,无需核查-退供未收获数量为0;)")
    private String sysInitialJudge;

    /**
     * 差异类型。
     */
    @ColumnWidth(15)
    @ExcelProperty(value = "差异类型")
    @ApiModelProperty(value = "差异类型。")
    private String diffType;

    /**
     * 跟进部门
     */
    @ColumnWidth(15)
    @ExcelProperty(value = "跟进部门")
    @ApiModelProperty(value = "跟进部门")
    private String followUpDept;

    /**
     * 核查结果
     */
    @ColumnWidth(15)
    @ExcelProperty(value = "核查结果")
    @ApiModelProperty(value = "核查结果")
    private String checkResult;

    /**
     * 百丽核查结果说明
     */
    @ColumnWidth(25)
    @ExcelProperty(value = "百丽核查结果说明")
    @ApiModelProperty(value = "百丽核查结果说明")
    private String blCheckDescript;

    /**
     * 唯品核查结果说明
     */
    @ColumnWidth(25)
    @ExcelProperty(value = "唯品核查结果说明")
    @ApiModelProperty(value = "唯品核查结果说明")
    private String wpCheckDescript;

    /**
     * 责任方
     */
    @ColumnWidth(15)
    @ExcelProperty(value = "责任方")
    @ApiModelProperty(value = "责任方")
    private String responsibleParty;

    /**
     * 损失原因
     */
    @ColumnWidth(15)
    @ExcelProperty(value = "损失原因")
    @ApiModelProperty(value = "损失原因")
    private String lossReason;

    /**
     * 核查时间
     */
    @ColumnWidth(22)
    @ExcelProperty(value = "核查时间",converter = DateTimeFormatConvert.class)
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
    public Date createTime;

    /**
     * 核查人
     */
    @ColumnWidth(15)
    @ExcelProperty(value = "核查人")
    public String createUser;

    int total;
}
